2021年,前端适配最简单最好的解决方案是什么?

您所在的位置:网站首页 vue h5适配方案 2021年,前端适配最简单最好的解决方案是什么?

2021年,前端适配最简单最好的解决方案是什么?

2023-03-28 12:39| 来源: 网络整理| 查看: 265

我来尝试着回答,因为这两种方案都可以说是我们先后推出的不同适配方案。

首先要说的,不管是 REM 适配方案还是 VW 适配方案,他们最初的初衷都是针对于移动端的适配方案,而且是适配移动手机端,还不包括像iPad这样的手持设备。

先看 REM 适配方案,在那个年代,设计稿也随着苹果设备出现,做出调整:

简单地说,从640px 换成了 750px。那个时候,我们就知道 vw 单位在移动端,特别是手机端是一个较好的单位,100vw 就相当于设计稿的尺寸,即 750px。但由于 vw 在2014年和2015年时候还未得到浏览器支持,也基于这个原因, @winter 大大采用了 rem 单位,并且模拟出 vw 的原理。为此给移动端有一个很好的适配方案。说实话,在那个时候这种方案简直就是金弹呀(不仅是银弹)。

有关于 REM 适配方案,曾写过一篇相关的文章,感兴趣的话可以阅读一下下:

随着后面 vw 得到更多浏览器支持之后,也就大约是 2017年,我就尝试着使用 vw 来替换 rem 方案,并且在2018年得到更多团队的认可,而且社区使用这种方案或类似方案的团队越来越多,就成了一种主流方案。

但 VW 有一个最致命的问题,他除了在手机端上有较好的浏览效果之外,其他宽屏设备会占满全屏幕,浏览起来就觉得很大,而且 vw 还不能像 rem 那种方案,让其在 PC 端(宽屏)之下水平居中。

今年随着 CSS 函数中的比较函数的到来,特别是 clamp() 函数到来之后,可以利用该函数特性,做了个更好的选择,比如给clamp()函数提供一个最小值,最佳值和最大值:

就拿字号来说,你可以:

body { font-size: clamp(16px, 5vw, 50px) }

这也很像 CSS 锁理念:

相当于给了一个区间值。

最近,我自己也借助了这种理念,根据设计稿尺寸,用户当前视窗宽度,加上最小视窗宽度和最大视窗宽度,构建一个像素级完美缩放的布局方案。这种方案有一个简单的计算公式:

像素缩放值(采用像素单位值)= 设计稿理想尺寸像素值 x 当前视窗宽度(100vw) / 设计稿尺寸(理想设计稿宽度)

打个比方,设计稿的宽度是 750px,某个元素的字号在设计稿上 24px ,那么:

font-size: calc(24 * 100vw / 750)

如果把区间值整进来:

font-size: calc(24 * clamp(320px, 100vw, 1440px) / 750)

可以借助 CSS 自定义属性,让它变得更简单一点:

:root { --ideal-viewport-width: 750; --current-viewport-width: 100vw; --min-viewport-width: 320px; --max-viewport-width: 1440px; --clamped-viewport-width: clamp( var(--min-viewport-width), var(--current-viewport-width), var(--max-viewport-width) ) } .element { font-size: calc(24 * var(--clamped-viewport-width) / var(--ideal-viewport-width)) }

你将看到下面这样的效果:

https://www.zhihu.com/video/1400597610444623872

更详细的介绍可以阅读:

当然这种技术方案也是有一定缺陷在的,比如像下面这样的一个 UI 页面效果:

如果你想让它有一个更好的效果,那就需要使用 CSS 媒体查询,或者像《2021年你可能不知道的 CSS 特性》一文提到的 容器查询相关的特性。

另外,它可能会让你的代码变得更冗余,也更难阅读和维护,不过你可以编写一个 SCSS 函数,或 PostCSS 插件,让编写和阅读更易。

这仅是提供一种新的思路,希望对题主有所帮助。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3